﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EstacionDePoder.Codigo;
using BLLEP.Funcionalidad;
using BLLEP;
using System.Drawing;
using mercadopago;
using System.Globalization;
using System.Collections;

namespace EstacionDePoder.Tienda
{
    public partial class PagarMercadoPago : FormGenerico
    {
        public int IdPedido
        {
            get { return int.Parse(Request.QueryString["idPedido"]); }
        }


        private void ValidarDatos()
        {
            BLLPedido bllPedido = new BLLPedido();
            EP_Pedido pedido = bllPedido.Traer(IdPedido);

            if (pedido == null || !pedido.EP_Usuario.Email.ToLower().Equals(User.Identity.Name))
                Response.Redirect("~/Default.aspx");
        }

        private void CargarDatos()
        {
            BLLPedido bllPedido = new BLLPedido();
            EP_Pedido pedido = bllPedido.Traer(IdPedido);

            decimal subTotal = bllPedido.CalcularTotal(pedido);
            decimal comision = subTotal * (MercadoPagoPorcentajeComision / 100);
            decimal total = subTotal + comision;

            lblCodigoPedido.Text = pedido.Codigo;
            lblSubTotal.Text = "$" + subTotal.ToString("N2");
            lblComisionMercadoPago.Text = "$" + comision.ToString("N2");
            lblTotal.Text = "$" + total.ToString("N2");

            MP mp = new MP(MPID, MPKey);
            mp.sandboxMode(MPTest);

            String preferenceData = "{\"items\":[{\"title\":\"sdk-dotnet\",\"quantity\":1,\"currency_id\":\"ARS\",\"unit_price\":valorPrecio}] }";
            
            preferenceData = preferenceData.Replace("sdk-dotnet", "Pedido:" + pedido.Codigo);
            preferenceData = preferenceData.Replace("valorPrecio", total.ToString("N2", new CultureInfo("en-US")));

            Hashtable preference = mp.createPreference(preferenceData);
            string url = null;

            if (MPTest)
                url = ((Hashtable)preference["response"])["sandbox_init_point"].ToString();
            else
                url = ((Hashtable)preference["response"])["init_point"].ToString();

            lnkConfirmar.NavigateUrl = url;
        }


        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                ValidarDatos();
                CargarDatos();
            }
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                BLLPagoMercadoPago bllMercadoPago = new BLLPagoMercadoPago();
                bllMercadoPago.CargarSolicitud(IdPedido);
                bllMercadoPago.GuardarCambios();

                ValidarDatos();
                BLLPedido bllPedido = new BLLPedido();
                EP_Pedido pedido = bllPedido.Traer(IdPedido);

                decimal subTotal = bllPedido.CalcularTotal(pedido);
                decimal comision = subTotal * (MercadoPagoPorcentajeComision / 100);
                decimal total = subTotal + comision;

                

                RegisterStartupScript("verga", "<script>alert('pija')</script>");
            }
            catch (BLLEPException ex)
            {
                lblResultado.Text = ex.Message;
                lblResultado.ForeColor = Color.Red;

            }
            catch (Exception ex)
            {
                lblResultado.Text = "Ha ocurrido un error al intentar cargar la solicitud";
                lblResultado.ForeColor = Color.Red;
            }
        }
    }
}